import os
import subprocess

# 输入和输出的主目录（改成自己的目录）
input_dir = "D:/file/postgrad/experiment/video_2/rename_video"
output_dir = "D:/file/postgrad/experiment/video_2/reframe_video"

# 创建输出目录（如果不存在）
if not os.path.exists(output_dir):
    os.makedirs(output_dir)


def process_video(input_file, output_file):
    # 调用 ffmpeg 将帧率转换为 30fps
    command = ['ffmpeg', '-i', input_file, '-r', '30', '-y', output_file]
    print(f"Processing: {input_file} -> {output_file}")

    try:
        subprocess.run(command, check=True)
    except subprocess.CalledProcessError as e:
        print(f"Error occurred while processing {input_file}: {e}")


def traverse_and_process(input_dir, output_dir):
    # 遍历文件夹
    for root, dirs, files in os.walk(input_dir):
        # 计算输出路径中的相对路径
        relative_path = os.path.relpath(root, input_dir)
        output_subdir = os.path.join(output_dir, relative_path)

        # 如果输出目录不存在，则创建
        if not os.path.exists(output_subdir):
            os.makedirs(output_subdir)

        # 遍历所有文件并处理 MP4 文件
        for file in files:
            if file.endswith('.mp4'):
                input_file = os.path.join(root, file)
                output_file = os.path.join(output_subdir, file)

                # 如果文件不存在，进行处理
                if not os.path.exists(output_file):
                    process_video(input_file, output_file)


# 运行函数，开始遍历和处理
traverse_and_process(input_dir, output_dir)



